package demo2;

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description :
 * User: $ {USER}
 * Date: $ {YEAR}-$ {MONTH}一$ { DAY}
 * Time: ${ TIME}
 */
class A implements Cloneable{
    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}
public class Test {
    public static void main4(String[] args) {
        int[] array = new int[5];
        try{
            System.out.println(array.length);
            System.out.println(array[10]);
            System.out.println("当前面代码抛出异常时，这里的代码不会被执行");
        }catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("这里捕获到了前面代码抛出的异常，是数组越界异常，并进行了处理");
            //return;
        }catch (NullPointerException e) {
            System.out.println("这里捕获到了前面代码抛出的异常，是空指针异常，并进行了处理");
        }catch (Exception e) {
            System.out.println("如果抛出了异常，并且异常没有被前面的捕获，那么这里的代码一定会执行，并进行了处理");
            return;
        }finally {
            System.out.println("无论前面是否会抛出异常，这里一定会执行");
        }
        System.out.println("由于前面的异常被捕获了，就算真正的处理了异常，因此这里的代码会被执行");
    }


    public static void main3(String[] args) {
        int[] array = new int[5];
        int n = 10;
        if (n > (array.length-1)) {
            throw new ArrayIndexOutOfBoundsException("代码有异常，是数组越界异常……");
        }else {
            System.out.println(array[n]);
        }
        System.out.println(3);

        /*try {
            登陆游戏();
            开始匹配();
            游戏确认();
            选择英雄();
            载入游戏画面();
            ...
        } catch (登陆游戏异常) {
            处理登陆游戏异常;
        } catch (开始匹配异常) {
            处理开始匹配异常;
        } catch (游戏确认异常) {
            处理游戏确认异常;
        } catch (选择英雄异常) {
            处理选择英雄异常;
        } catch (载入游戏画面异常) {
            处理载入游戏画面异常;
        }
        ......*/

        /*boolean ret = false;
        ret = 登陆游戏();
        if (!ret) {
            处理登陆游戏错误;
            return;
        }
        ret = 开始匹配();
        if (!ret) {
            处理匹配错误;
            return;
        }
        ret = 游戏确认();
        if (!ret) {
            处理游戏确认错误;
            return;
        }
        ret = 选择英雄();
        if (!ret) {
            处理选择英雄错误;
            return;
        }
        ret = 载入游戏画面();
        if (!ret) {
            处理载入游戏错误;
            return;
        }
        ......*/
    }
    public static void main2(String[] args) throws CloneNotSupportedException {
        A a = new A();
        A b = (A)a.clone();

        int[] array = new int[5];
        System.out.println(array[10]);

        //int i = 3.14; // 这个不是编译时异常，这个叫语法错误
    }



    public static void func() {
        func();
    }
    public static void main1(String[] args) {
        func();


        String s = null;
        System.out.println(s.length());
    }
}
